<?php

namespace app\model;

use think\Model;
use think\model\relation\BelongsTo;

class UserInvite extends Model
{
    /**
     * 关联的数据表。
     *
     * @var string
     */
    protected $table = 'user_invite';
    /**
     * 自动时间戳数据类型
     *
     * @var string
     */
    protected $autoWriteTimestamp = 'int';
    protected $createTime = 'create_at';
    protected $updateTime = 'update_at';
    /**
     * 属性默认值。
     *
     * @var array<int, string>
     */
    protected $attribute = [
        'user_id' => 0,  // 用户
        'aim_id' => 0,  // 被邀请的人
        'status', // 状态
    ];
    /**
     * The attributes that are mass assignable.
     *
     * @var array<string>
     */
    protected $field = [
        'user_id', // 用户
        'aim_id',  // 被邀请的人
        'status', // 状态
    ];
    /**
     * The attributes that should be cast.
     *
     * @var array<string>
     */
    protected $type = [
        'create_at' => 'timestamp:Y-m-d H:i:s',
        'update_at' => 'timestamp:Y-m-d H:i:s',
        'delete_at' => 'timestamp:Y-m-d H:i:s',
    ];
    // 定义全局的查询范围
    protected $globalScope = ['user'];
    // 查询范围
    public function scopeUser($query)
    {
        if(request()->subIn(['m', 'mini', 'mobile', 'app'])){
            $query->where('user_id', request()->uid);
        }
    }
    /**
     * 用户
     *
     * @return void
     */
    public function user() : BelongsTo
    {
        return $this->belongsTo('User');
    }
    /**
     * 关注的人
     *
     * @return void
     */
    public function aim() : BelongsTo
    {
        return $this->belongsTo('User', 'aim_id');
    }
    public function searchUserIdAttr($query, $value, $data)
    {
        $value > 0 && $query->where('user_id', $value);
    }
    public function searchAimIdAttr($query, $value, $data)
    {
        $value > 0 && $query->where('aim_id', $value);
    }
    /*
     * 新增前
     */
    public static function onBeforeInsert($model)
    {
        $model->user_id = request()->uid;
    }
}
